package br.usp.ime.lab.analyzer;


import java.util.Vector;

import recoder.abstraction.Method;
import recoder.java.ProgramElement;

public interface ConditionAnalyzer {
	/**
	 * @param local: package path
	 * @param pkg: package name
	 * @return a Vector containing all Methods of all 
	 * 		   Classes of package (and subpackage - recursively) 
	 */
	public Vector<Method> getAst(String local, String pkg);
	
	/**
	 * @param method: Method Element
	 * @return a Vector containing Decisions Structures such as If, While, For ...
	 */
	public Vector<ProgramElement> getAllDecisions(Method method);
	
	/**
	 * @param method: Method Element
	 * @return a Vector containing Conditions Elements such as Identifier, 
	 *         MethodReferences, BooleanLiterals, ...
	 */
	public Vector<ProgramElement> getAllConditions(ProgramElement method);
	
	/**
	 * @param method: Method Element
	 * @return a Vector containing MCDC Elements such as Identifier, 
	 *         MethodReferences, BooleanLiterals, ...
	 */
	public Vector<ProgramElement> getAllMCDC(ProgramElement method);
	
	/**
	 * @param xmlPath: full file name will save all method decisions
	 * @param method: Method Element
	 */
	public void getAllDecisions(String xmlFileName, Method method);

	/**
	 * @param xmlPath: full file name will save all method conditions
	 * @param method: Method Element
	*/
	public void getAllConditions(String xmlFileName, Method method);

	/**
	 * @param xmlPath: full file name will save all MCDC
	 * @param method: Method Element
	 */
	public void getAllMCDC(String xmlFileName, ProgramElement method);
}
